package sistemasdistribuidos;

import java.io.*;
import java.net.*;

/** Classe Servidor
 * @author Rafael Neri
 * @author Helem Chaves
 * @author Airton Filho
 * @author Elizeu Rodrigues
 */
public class Servidor2 extends Thread{
    static int nClients=0;
    int idClient = 0;
    static ServerSocket servsock;

/** Instacia um objeto do tipo Servidor e cria uma nova Thread.
 */
   synchronized public static void main(String[] args) throws IOException{

        //inicializa servidor na porta 15
        int porta = 15;
        servsock = new ServerSocket(porta);

        //Cria e inicia a Thread
        Thread ThServidor = new Thread(new Servidor2());
        ThServidor.start();

        System.out.println("Servidor ativo em " + InetAddress.getLocalHost() + " na porta " + porta);

    }

    //código de execução da thread
    @Override
    public void run(){
            while(true){
                try{
                    //escuta e aceita as conexões
                    Socket sock = servsock.accept();

                    nClients +=1;
                    idClient = nClients;

                    System.out.println("CLIENTE CONECTANDO: " + sock.getInetAddress() + " atraves da porta " + sock.getPort()+". Total de Clientes: " + nClients);

                    PrintStream out = new PrintStream(sock.getOutputStream());
                    out.println(idClient);

                }
                catch (Exception e){
                    // conexao recusada
                    System.out.println(e);
                }
           }
   }
}